package cn.jimmie.lib.qlog.demo;

import android.os.Bundle;
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;

import java.io.File;
import java.util.Random;

import cn.jimmie.lib.qlog.QFormat;
import cn.jimmie.lib.qlog.QLog;
import cn.jimmie.lib.qlog.QLogLevel;
import cn.jimmie.lib.qlog.interceptor.AndroidLogInterceptor;
import cn.jimmie.lib.qlog.interceptor.CommonHeaderInterceptor;
import cn.jimmie.lib.qlog.interceptor.DefaultNetworkInterceptor;
import cn.jimmie.lib.qlog.interceptor.MmapFileInterceptor;

public class MainActivity extends AppCompatActivity {
    private Random random = new Random();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final MmapTask task = new MmapTask();
        task.init(this);

        QLog.init(QLog.Config.creator(this)
                // 头部拦截器 用于定义日志前缀 等固定字段
                .headerInterceptor(new CommonHeaderInterceptor())
                // 网络拦截器 用于上传日志
                .networkInterceptor(new DefaultNetworkInterceptor())
                // 文件拦截器 用于日志保存本地
                .fileInterceptor(new MmapFileInterceptor())
                // 控制台拦截器 用于日志显示在控制台
                .consoleInterceptor(new AndroidLogInterceptor())
                // 本地日志文件的最大大小
                .logMaxSize(10 * 1024 * 1024)
                // 本地日志路径
                .logPath(getExternalFilesDir("") + File.separator + "mylog.txt")
                // 日志级别
                .level(QLogLevel.INFO)
                // 标签
                .tag("QLogger"));

        findViewById(R.id.btn_read).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int size = random.nextInt(90) + 10;
                for (int i = 1; i < size; i++) {
                    StringBuilder sb = new StringBuilder();
                    for (int j = 0; j < i; j++) {
                        sb.append(j);
                    }
                    QLog.w(sb.toString());
                }
            }
        });

        findViewById(R.id.btn_write).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                task.write(String.valueOf(random.nextInt(200)));
            }
        });
    }
}
